package org.sunriz;

import org.sunriz.DAO.Signal;
import org.sunriz.server.RefNotExist;
import org.sunriz.server.AllOutputToExcel;
import org.sunriz.server.GetOutput;
import org.sunriz.server.RefactorInput;

import java.util.HashMap;
import java.util.List;

public class Run {
    public static void main(String[] args) {

        // 获取输出点
        HashMap<String, List<Signal>> output = GetOutput.getOutput();


        System.out.println("请输入处理类型：\n1. 引用输入点(不支持跨控制器的引用以及IO卡件，需手动添加上网点)\n2. 查找尚未引用的输入点，输出excel\n3. 查找所有的输出点，输出excel\n4. 退出程序");

        // 读取用户输入
        java.util.Scanner scanner = new java.util.Scanner(System.in);
        int choice = 0;
        boolean validInput = false;
        
        // 循环读取用户输入，直到输入1-4之间的数字
        while (!validInput) {
            try {
                choice = scanner.nextInt();
                if (choice >= 1 && choice <= 4) {
                    validInput = true;
                } else {
                    System.out.println("请输入1-4之间的数字");
                    System.out.println("请输入处理类型：\n1. 引用输入点(不支持跨控制器的引用以及IO卡件，需手动添加上网点)\n2. 查找尚未引用的输入点，输出excel\n3. 查找所有的输出点，输出excel\n4. 退出程序");
                }
            } catch (java.util.InputMismatchException e) {
                System.out.println("请输入有效的数字");
                System.out.println("请输入处理类型：\n1. 引用输入点(不支持跨控制器的引用以及IO卡件，需手动添加上网点)\n2. 查找尚未引用的输入点，输出excel\n3. 查找所有的输出点，输出excel\n4. 退出程序");
                scanner.next(); // 清除无效输入
            }
        }

        try {
            switch (choice) {
                case 1:
                    System.out.println("开始引用输入点...");
                    RefactorInput.refactor(output);

                    break;
                case 2:
                    System.out.println("查找未引用的输入点...");
                    RefNotExist.getRefNotExist();
                    break;
                case 3:
                    System.out.println("查找所有的输出点...");
                    AllOutputToExcel.allOutputToExcel(output);
                    break;
                case 4:
                    System.out.println("程序退出");
                    System.exit(0);
                    break;
                default:
                    System.out.println("无效的选择");
                    System.exit(1);
            }
        } catch (Exception e) {
            System.out.println("程序出现问题，请检查");
            e.printStackTrace();
        }


        System.out.println("执行完成");

    }
}